package com.anlu.base.jdk.jdk8.functions;

import java.util.function.Supplier;

/**
 * <p>
 * Description:抽象方法：T get()
 * 用途：表示一个供应商，不接受任何参数，返回一个结果。
 * 使用场景：当需要获取一个对象，而该对象的创建逻辑比较复杂或者需要重复使用时，可以使用Supplier。
 * <p>
 *
 * @author anlu
 * @date 2024/9/24 14:02
 */
public class ProductManager
{
    public static void main(String[] args)
    {
        Product product = createProduct(() ->
        {
            // 从数据库获取商品信息并创建Product对象
            return getFromDatabase();
        });

        System.out.println(product);
    }

    public static Product createProduct(Supplier<Product> supplier)
    {
        return supplier.get();
    }

    public static Product getFromDatabase()
    {
        // 从数据库获取商品信息
        // ...
        return new Product("iPhone", 999);
    }
}
class Product
{
    private String name;
    private double price;

    public Product(String name, double price)
    {
        this.name = name;
        this.price = price;
    }

    @Override
    public String toString()
    {
        return "Product{" +
                "name='" + name + '\'' +
                ", price=" + price +
                '}';
    }
}